
/*--------------------------------------------------------------------------
  
　ダメージでＨＰ表示するスクリプト

■概要
　イベントコマンドやステートによるＨＰ減少が発生した時、減少後のHPを表示します。

■注意事項
　ダメージを受ける対象が複数存在し、ダメージで死ぬユニットが死亡メッセージを持つ場合、
　死亡メッセージ表示後、メッセージウィンドウが消えずに後続のユニットのダメージ処理が行われます。
　（ツール内の動作が『ダメージ処理を一括で実施し、中途で死んだユニットのメッセージは表示後消去されない』形になっているようです）

修正内容
15/10/23　新規作成
15/10/25　ダメージによってユニットがロストする際もHP表示を行うよう修正
16/06/06　ダメージを受ける時にスキップを行うと、HP0となって死ぬユニットが死なずに残るバグを修正
16/12/22　ダメージ表示時にHP減少を表示するよう修正
17/11/02　1.160対応
17/11/29　画像を表示しない、を設定した際でもダメージ音が発生するバグを修正


■対応バージョン
　SRPG Studio Version:1.160


■規約
・利用はSRPG Studioを使ったゲームに限ります。
・商用・非商用問いません。フリーです。
・加工等、問題ありません。どんどん改造してください。
・クレジット明記無し　OK
・再配布、転載　OK
・wiki掲載　OK
・SRPG Studio利用規約は遵守してください。
  
--------------------------------------------------------------------------*/
(function() {


//----------------------------------------------
// 設定
//----------------------------------------------




//----------------------------------------------
// 以下、プログラム
//----------------------------------------------
//------------------------------------------
// RecoveryWindowクラス
//------------------------------------------
RecoveryWindow.startDamage= function(value) {
		this._playDamageSound();
		this._gaugeBar.startMove(value);
}


// ダメージ音
RecoveryWindow._playDamageSound= function() {
		MediaControl.soundDirect('damage');
}




//------------------------------------------
// DamageShowFlowEntryクラス
//------------------------------------------
var alias10 = DamageShowFlowEntry.enterFlowEntry;
DamageShowFlowEntry.enterFlowEntry= function(damageData) {
		var result = alias10.call(this, damageData);

		this._recoveryWindow = null;
		if (damageData.isHit) {
			this._recoveryWindow = createWindowObject(RecoveryWindow, this);
			this._recoveryWindow.setRecoveryUnit(damageData.targetUnit);
			
			// 画像を表示しない、を設定していない時だけダメージ音を出す
			if( this.isFlowSkip() == false ) {
				this._recoveryWindow.startDamage(-(damageData.damage));
			}
		}

		return result;
};


var alias11 = DamageShowFlowEntry.moveFlowEntry;
DamageShowFlowEntry.moveFlowEntry= function() {
		var result = alias11.call(this);

		if( this._recoveryWindow != null ) {
			this._recoveryWindow.moveWindow();
		}

		return result;
}


var alias12 = DamageShowFlowEntry.drawFlowEntry;
DamageShowFlowEntry.drawFlowEntry= function() {
		alias12.call(this);

		if( this._recoveryWindow != null ) {
			var width = this._recoveryWindow.getWindowWidth();
			var height = this._recoveryWindow.getWindowHeight();
			var x = LayoutControl.getUnitBaseX(this._damageData.targetUnit, width);
			var y = LayoutControl.getUnitBaseY(this._damageData.targetUnit, height);
			
			this._recoveryWindow.drawWindow(x, y);
		}
}


})();